/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import POJO.Donhang;
import UTIL.HibernateUtil;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.classic.Session;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

/**
 *
 * @author nhlvu07db373
 */
public class GetIDDAO extends HibernateDaoSupport {

    private Session session;

    /**
     * Phát sinh mã tự động
     * @param keyword Các chữ cái mẫu đầu tiên cho mã
     * @param tenBang Tên bảng cần phát sinh
     * @param PK Tên cột khóa chính
     * @return Chuỗi mã phát sinh nếu lối trả ra keyword
     */
    public String getID(String keyword, String tenBang, String PK) {
        String id = "";
        String rs = "";
        String sql = "SELECT MAX( " + PK + ") FROM " + tenBang;
        session = HibernateUtil.getSessionFactory().openSession();
        try {
            session = HibernateUtil.getSessionFactory().openSession();
            org.hibernate.Transaction ts = session.beginTransaction();
            rs = (String) session.createQuery(sql).uniqueResult();
            ts.commit();
            session.flush();

        } catch (Exception ex) {
            System.err.println(ex.getMessage().toString());
        } finally {
            session.close();
        }
        if (rs != null) {
            int n = rs.length();
            int t = 0;
            int s = Integer.parseInt(rs.charAt(n - 1) + "")+1;
            if (s >= 10) {
                s = s % 10;
                t = 1;
            }
            id+=s;
            for (int i = rs.length() - 2; i >= keyword.length(); i--) {
                s = Integer.parseInt(rs.charAt(i) + "") + t;
                if (s >= 10) {
                    s = s % 10;
                    t = 1;
                } else {
                    t = 0;
                }
                id = s + id;
            }
            id = keyword + id;
        } else {
            id = keyword + "000001";
        }
        return id;
    }
}
